// 默认的全局配置

//优先级：先是默认配置 然后是实例的defaults属性 最后是axios.get('', {config})中的config参数
import axios from 'axios'

axios.defaults.baseURL = 'http://default-url/'

axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

//拦截器
axios.interceptors.request.use(config => { //config是配置选项的对象
    config.params = {
        tip: `拦截器拦截请求改变params请求参数`,
        ...config.params
    }
    if (config.method === 'post') {
        config.data = {
          add: '拦截器拦截请求改变data请求参数',
          ...config.data
        }
    }
    return config
}, err => {
    return Promise.reject(err)
})

axios.interceptors.response.use(response => {
    if (response.config.baseURL == 'http://avengers.local/') {
        response.data.content = '（拦截器拦截响应）' + response.data.content
    }
    return response
}, err => {// 拦截错误信息
    return Promise.reject(err)
})

// 移除拦截器：
// var myInterceptor = axios.interceptors.request.use(function () {
//   /*...*/ });
// axios.interceptors.request.eject(myInterceptor);

// 自定义实例添加拦截器
// var instance = axios.create();
// instance.interceptors.request.use(function () {
//   /*...*/ });

// 取消请求
// var CancelToken = axios.CancelToken;
// var cancel;

// axios.get('/user/12345', {
//   cancelToken: new CancelToken(function executor(c) {
//     // executor 函数接收一个 cancel 函数作为参数
//     cancel = c;
//   })
// });

// // 取消请求
// cancel();
